<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // - 不能重复声明： 以let声明的变量不能被再次声明，且被其它方式声明的变量也不能被let再次声明
        // - 无变量提升：以let声明的变量不能在变量声明前进行使用
        // - 暂时性死区：ES6为通过let声明的变量提供了块作用域的特性，被定义在块中的let变量只能在块中使用
        let username="tom";
        console.log(username);

        //不能重复声明
        let a=100;
        // let a=20;

        //已经声明的变量不能再次使用let声明
        var b="波波";
        // let b="楠楠";

        //以下写法是可以的
        let c="嘿嘿";
        c="嘻嘻";
        console.log(c);

        //无变量提升
        // console.log(d);
        let d="我们一起学猫叫";

        //暂时性死区
        window.onload=function(){
            var lis=document.getElementsByTagName("li");
            for(let i=0;i<lis.length;i++){
                lis[i].onclick=function(){
                    console.log(i);
                };
            }
            // console.log(i);//使用let声明变量支持块级作用域，所以这边i报错
        };

        var myName="周杰伦";
        (function(username){//形式参数
            var age=20;
            console.log("我的名字："+username+",show:"+age);
        })(myName);//实际参数
      

        (function(name){
            console.log("我的大名叫:"+name);
        })(myName);
        //自定义代码块
        {
            let age=30;
            console.log(age);
            let show=function(){
                console.log(age);
            };
          
        }
        {
            let age=30;
            console.log(age);
            let show=function(){
                console.log(age);
            };
          
        }
        // const 使用const声明常量，常量不能重复赋值，声明的是一个只读的常量，一旦声明，常量的值就不能改变。
        // - 不能重复声明： const声明的变量不能被再次声明，且被其它方式声明的变量也不能被const再次申明
        // - 无变量提升：以const声明的变量不能在变量声明前进行使用
        // - 暂时性死区：ES6为通过const声明的变量提供了块作用域的特性，被定义在块中的const变量只能在块中使用
        // - 不能重复赋值：被const声明的变量不能再次赋值

        const num=200;
        // num="aaa";
        console.log(num);
        {
            const height=187;
        }
        // console.log(height);
    </script>
</head>
<body>
    <li>li</li>
    <li>li</li>
    <li>li</li>
</body>
</html>